
//
//  CPJHomePageCell.swift
//  Sina
//
//  Created by yang on 2017/8/13.
//  Copyright © 2017年 成品家（北京）网路科技有限公司. All rights reserved.
//

import UIKit

//选中cell的协议
//如果需要设置可选协议的方法
//1:遵守NSObjectProtocol协议
//2:协议需要是@objc protocol
//3:方法需要@objc optional
@objc protocol HomePageCellDelegate: NSObjectProtocol
{
    //cell选中URL字符串
    @objc optional func cellDidSelectedURLString(cell: CPJHomePageCell, urlString: String)
}
class CPJHomePageCell: UITableViewCell {
    //头像
    @IBOutlet weak var avatarImageView: UIImageView!
    //姓名
    @IBOutlet weak var nameLable: UILabel!
    //时间
    @IBOutlet weak var timeLabel: UILabel!
    //会员
    @IBOutlet weak var vipIconImageView: UIImageView!
    //来源
    @IBOutlet weak var sourceLabel: UILabel!
    //认证
    @IBOutlet weak var vertifyImageView: UIImageView!
    //正文
    @IBOutlet weak var contextLabel: FFLabel!
    
    //配图视图
    @IBOutlet weak var pictureView: CPJPictureView!
    
    //底部视图
    @IBOutlet weak var bottomToolView: CPJCellToolBar!
    
    //转发内容(转发微博有，原创微博没有，设置为可选的)
    @IBOutlet weak var retweetLabel: FFLabel?
    
    //代理属性
    weak var delegate: HomePageCellDelegate?

    //表视图上下滑动的时候，一直调用
    var viewModel: CPJListViewModel?
    {
        didSet
        {
            //头像
            let urlString = viewModel?.homePageModel.user?.profile_image_url
            avatarImageView.setImage(urlString: urlString, placeholderImage: UIImage(named: "avatar_default_big"),isAvatar: true)
        
            //昵称
            nameLable.text = viewModel?.homePageModel.user?.screen_name
            
            //正文 
            contextLabel.attributedText = viewModel?.statusAttributeString
            
            //会员图标 (直接获取属性，不需要计算)
            vipIconImageView.image = viewModel?.memberIcon
        
            //认证图标
            vertifyImageView.image = viewModel?.vertifyIcon
            
            //配图视图
            pictureView.viewModel = viewModel
            
            //转发内容
            //retweetLabel.text = viewModel?.retweetText
            retweetLabel?.attributedText = viewModel?.retweetAttributeString
            
//            var tempArray = viewModel?.homePageModel.pic_urls ?? []
//            if tempArray.count > 4
//            {
//                //从数组的第四张之后进行删除操作
//                tempArray.removeSubrange(tempArray.startIndex+4 ..< tempArray.endIndex)
//            }
            //底部工具栏
            bottomToolView.viewModel = viewModel
            
            //来源设置
            sourceLabel.text = viewModel?.homePageModel.source
            
            //sourceLabel.text = viewModel?.sourceString
            
            //微博创建时间
            //timeLabel.text = viewModel?.homePageModel.created_at
            timeLabel.text = viewModel?.homePageModel.createdDate?.dateDescription
        }
    }
    
    override func awakeFromNib() {
        super.awakeFromNib()
    
        //离屏渲染
        layer.drawsAsynchronously = true
        //栅格化 
        //cell优化，要尽量减少图层的数量，相当于只有一层
        layer.shouldRasterize = true
        
        //使用‘栅格化’，必须指定分辨率
        layer.rasterizationScale = UIScreen.main.scale
        //设置代理
        contextLabel.delegate = self
        retweetLabel?.delegate = self
    }
}

extension CPJHomePageCell: FFLabelDelegate
{
    func labelDidSelectedLinkText(label: FFLabel, text: String) {
        
        //判断是否包含URL
        if !text.hasPrefix("http://") {
            return
        }
        //插入？，如果代理没有实现协议方法，就什么都不做
        //插入！，如果代理没有实现协议方法，就会强制执行，会发生崩溃
        delegate?.cellDidSelectedURLString?(cell: self, urlString: text)
    }
}
